﻿Imports System.Text.RegularExpressions
Imports Kairyu.Connection

Public MustInherit Class TableFactoryBase

    Public Shared Function Instance() As TableFactoryBase
        Dim s = KairyuSectionHandlerFactory.Create.ExecutionEnvironment.DBMS

        '#90　DBMS名を管理する
        'DBMS名から適切なテーブル定義ファクトリーを返します。
        Select Case s
            Case DBMS.SqlCe
                Return New SqlCe35.TableFactory
            Case DBMS.SqlServer
                Return New SqlServer.TableFactory
            Case DBMS.SqlServer2012
                Return New SqlServer2012.TableFactory
            Case DBMS.Oracle
                Return New Oracle.TableFactory
            Case DBMS.MySQL
                '#97　MySQL対応
                Return New MySQL.TableFactory
        End Select

        Throw New NotSupportedException(String.Format("サポートされていないDBMSです。(DBMS名：{0})", s))
    End Function

    Public Sub Create(cn As IDbConnection, t As Type)
        Dim lst As New List(Of Type)
        lst.Add(t)
        Me.Create(cn, lst)
    End Sub

    Public Sub Create(cn As IDbConnection, ts As IEnumerable(Of Type))
        Me.CreateCore(cn, ts)
        TableAttributeReader.ClearCache() 'DDLで使用したキャッシュを廃棄します。（#58）
    End Sub

    Protected MustOverride Sub CreateCore(cn As IDbConnection, ts As IEnumerable(Of Type))
End Class

